/**
 * 正则校验相关常量
 */
// 验证码
const VERIFICATION_REGEX = {
  pattern: /^[0-9]{6}$/,
  message: '请输入6位验证码'
}

// url正则
const URL_REGEX = {
  pattern: /^https?:\/\/(([a-zA-Z0-9_-])+(\.)?)*(:\d+)?(\/((\.)?(\?)?=?&?[a-zA-Z0-9_-](\?)?)*)*$/i,
  message: '请输入正确的URL格式'
}

// 姓名正则
const NAME_REGEX = {
  pattern: /^[\u4e00-\u9fa5a-zA-Z\s]{2,20}$/,
  // message: '请输入2-20位中英文姓名',
  message: '请输入正确的姓名'
}

// 数字正则
const NUMBER_REGEX = {
  pattern: /^\d+$/,
  message: '只能输入数字'
}

// 电话号码正则
const TEL_REGEX = {
  pattern: /(^[0-9]{3,4}-[0-9]{7,8}$)|(^[0-9]{7,8}$)|(^\([0-9]{3,4}\)[0-9]{3,8}$)|(^0{0,1}(13|15|18|17)[0-9]{9}$)/,
  message: '请输入正确的电话号码。例如：0755-12345678'
}

// 手机号码正则
const PHONE_REGEX = {
  pattern: /^1\d{10}$/,
  message: '请输入11位手机号'
}

// 大陆港澳台手机号码正则
const PHONE_GAT_REGEX = {
  pattern: /^[1][3-9]\d{9}$|^([6|9])\d{7}$|^[0][9]\d{8}$|^[6]([8|6])\d{5}$|^\d{11}$/,
  message: '请输入正确的手机号码'
}

// 邮件正则
const EMAIL_REGEX = {
  pattern: /\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/,
  message: '请输入正确的Email格式'
}

// 日期正则
const DATE_REGEX = {
  pattern: /^[1-2][0-9][0-9][0-9]-[0-1]{1}[0-9]-[0-3]{1}[0-9]$/,
  message: '请输入正确的日期格式。例如：2010-01-01'
}

// 图形验证码正则
const VCODE_IMG_REGEX = {
  pattern: /^[a-zA-Z0-9]{4}$/,
  message: '请输入正确的图形验格式。例如：ab12'
}

// 短信验证码
const VCODE_SMS_REGEX = {
  pattern: /^\d{4}$/,
  message: '请输入4位数字的短信验证码'
}

// 密码正则
const PASS_REGEX = {
  pattern: /^[a-zA-Z0-9]{6,20}$/,
  message: '密码应为6-20位数字或字母'
}

// 银行卡号正则
const BANK_CARD_REGEX = {
  pattern: /^\d{16}|\d{19}$/,
  message: '请输入真实的银行卡号'
}

// 大陆身份证号码正则
const ID_CARD_REGEX = {
  pattern: /^\d{18}$|^\d{17}[Xx\d]$/,
  message: '请输入有效的身份证号码'
}

// 澳门身份证号正则
const AO_CARD_REGEX = {
  pattern: /^[157][0-9]{6}([0-9])$/,
  message: '请输入有效的澳门身份证'
}

// 香港身份证号正则
const HK_CARD_REGEX = {
  pattern: /^[A-Z][0-9]{6}([0-9A])$/,
  message: '请输入有效的香港身份证'
}

// 台湾身份证号正则
const TW_CARD_REGEX = {
  pattern: /^[A-Z][0-9]{9}$/,
  message: '请输入有效的台湾身份证'
}

// 护照正则
const PASSPORT_REGEX = {
  pattern: /^(?!.*_)\w{3,30}$/,
  message: '请输入有效的护照号码'
}

// 通行证正则
const PASS_CARD_REGEX = {
  pattern: /^(?!.*_)\w{8,}$/,
  message: '请输入有效的港澳通行证号码'
}

// 军官证正则
const MOC_REGEX = {
  pattern: /^\d{4,20}$|^\w+字第\d{4,}$/,
  message: '请输入有效的军官证'
}

// 台胞证正则
const MTP_REGEX = {
  pattern: /^[A-Z0-9()]{8,30}$/,
  message: '请输入有效的台胞证'
}

// 回乡证正则
const HOMETOWN_REGEX = {
  pattern: /^[A-Z0-9()]{8,30}$/,
  message: '请输入有效的港澳回乡证'
}

// 证件号码
const CERTIFICATES_REGEX = {
  pattern: /^[\w()-]{8,30}$/,
  message: '请输入有效的证件号码'
}

// 疾病/指标编码规则正则
const DISEASE_CODE_REGEX = {
  pattern: /^[a-zA-Z0-9]{2,50}$/,
  message: '只支持2-50位数字或字母组合'
}

// 评分公式正则
const FORMULA_VALUE_REGEX = {
  pattern: /^[-+*abAB0-9().]+$/,
  message: '公式只允许字母AB、数字0-9、负数、4位小数和符号+-*()'
}

// 费率因子编码正则
const FATE_CODE_REGEX = {
  pattern: /^[A-Za-z_]{1,100}$/,
  message: '只允许输入大小写字母、下划线,且限100个字符'
}

// 费率因子说明正则
const FATE_EXPLAIN_REGEX = {
  pattern: /^.{1,200}$/,
  message: '限200字符'
}

// 标签库编码正则
const TAG_CODE_REGEX = {
  pattern: /^\w{1,50}$/,
  message: '只能输入字母、数字、下划线，且限50个字符'
}

// 标签库、费率名称正则
const TAG_AND_FACTOR_NAME_REGEX = {
  // eslint-disable-next-line no-useless-escape
  pattern: /^[A-Za-z0-9\u4e00-\u9fa5\-\(\)（）]{1,50}$/,
  message: '只能输入中文、字母、数字、-、中英文括号，且限50个字符'
}

export {
  URL_REGEX,
  NAME_REGEX,
  NUMBER_REGEX,
  TEL_REGEX,
  PHONE_REGEX,
  PHONE_GAT_REGEX,
  EMAIL_REGEX,
  DATE_REGEX,
  VCODE_IMG_REGEX,
  VCODE_SMS_REGEX,
  PASS_REGEX,
  BANK_CARD_REGEX,
  ID_CARD_REGEX,
  AO_CARD_REGEX,
  HK_CARD_REGEX,
  TW_CARD_REGEX,
  PASSPORT_REGEX,
  PASS_CARD_REGEX,
  MOC_REGEX,
  MTP_REGEX,
  HOMETOWN_REGEX,
  CERTIFICATES_REGEX,
  DISEASE_CODE_REGEX,
  FORMULA_VALUE_REGEX,
  FATE_CODE_REGEX,
  FATE_EXPLAIN_REGEX,
  TAG_CODE_REGEX,
  TAG_AND_FACTOR_NAME_REGEX,
  VERIFICATION_REGEX
}
